Interleavers are used in many digital transmission devices, e.g., wireless communication devices, storage media drives, and the like, for spreading out errors in time so that errors within a codeword appear to be independent. In addition, interleavers are often used as “random” address generators. Interleaving is a process of reordering a sequence of symbols or bits in a predetermined manner. The “interleaver size” is equal to the size of the sequence. The apparatus performing the interleaving is referred to herein as the interleaver.
Many different types of interleavers are known in the art including S-random interleavers, algebraic interleavers, convolutional interleavers, helical interleavers, pseudo random interleavers, block interleavers, matched interleavers and the like. Each of these interleavers has its own strengths and weaknesses that cause them to be well suited for some applications and to not be the optimum solution for other applications. These weaknesses typically come in the form of constraints on the interleaver size and constraints on the amount of randomization that may be achieved by the interleaver.
For example, S-random Interleavers are one of the most widespread forms of interleavers. The principle behind S-random interleavers is to avoid mapping neighbor positions of an original input sequence to another neighbor position of the interleaved sequence within a window of size S. The design goal in S-random interleavers is to maximize S while preserving the above principle. However, S-random interleavers have to be re-designed every time the interleaver size is changed and there is typically no requirement of any resemblance between the interleavers with similar sizes.
Thus, it would be beneficial to have an apparatus and method for combining interleavers of different types so that the various strengths of these interleavers may be maximized while minimizing the weaknesses of the interleavers to thereby achieve an optimum combined output from the plurality of interleavers.